ターミナルでの入力の記録と再生、Webでの共有が可能なOSSツール – asciinema
こんにちは、shoito(しょいと)です。
今回はCloud Native Computing Foundation(CNCF)のサンドボックスプロジェクト、TelepresenceというKubernetesアプリケーションの開発とテストをローカルで行うための支援ツールを紹介しようと思ってましたが、トップページに埋め込まれているasciinemaの方が気になったので紹介します。
Telepresenceは別の機会に。
asciinemaとは
asciinemaはターミナルセッションの記録とWeb上での共有ができるOSSのツールです。
asciinema.orgにはギャラリーも設けられており、他のユーザーが共有しているターミナルの記録が見られます。
asciinemaを試してみた
macOS Mojave(10.14.1)環境で試しました。
Homebrewでインストールします。
$ brew install asciinema
※ macOS以外の環境の場合はInstallationを参考にしてみてください。
ローカルファイルに保存、再生してみる
asciinema rec
コマンドで記録を開始できます。
パラメータとしてファイルパスを指定すると、ファイルに保存できます。
今回はカレントディレクトリの hello-world.cast
というファイルに保存します。
$ asciinema rec ./hello-world.cast asciinema: recording asciicast to ./hello-world.cast asciinema: press <ctrl-d> or type "exit" when you're done $ # Say Hello World $ echo Hello World Hello World $ # Say Good bye $ echo Good bye Good bye $ date 2018年 11月15日 木曜日 17時46分12秒 JST $ exit asciinema: recording finished asciinema: asciicast saved to ./hello-world.cast
これで hello-world.cast
にターミナルの操作が記録されました。
次に、保存したファイルを再生してみます。
asciinema play
コマンドで再生できます。
$ asciinema play ./hello-world.cast
コマンドを実行すると以下のように入力スピードや内容がそのまま再生されます。
音は無いので職場でも安心して再生ボタンを押してください。
scriptコマンドとの違いは?と思うかもしれませんが、scriptコマンドはターミナルの表示内容のハードコピーであり、asciinemaと違い操作時の状況を再生したりはしません。
scriptコマンドみたいに表示内容を確認してみる
ぱっとどんな感じだったか結果だけ見たいという場合は asciinema cat
コマンドを使います。
$ asciinema cat ./hello-world.cast $ # Say Hello World $ echo Hello World Hello World $ # Say Good bye $ echo Good bye Good bye $ date 2018年 11月15日 木曜日 17時46分12秒 JST $ exit
Webで再生してみる
まずWebで共有する前に、asciinema.orgにアカウントを作成します。
これはアップロードしたファイルとアカウントを結びつけて、タイトルや説明を編集できるようにするためです。
手順としては、画面右上にある Log in/Sign up
メニューを押して遷移し、 Log in
フォームにメールアドレスを入力します。
メールベースのパスワード無し認証なので、ログインの際は毎回メールアドレスか登録後に設定する username
を入力して送られてくるメールにあるリンクからログインします。
アップロードの準備にはもうひと手間あります。
アップロードはCLIで行うため、事前にローカルのasciinemaとasciinema.orgのアカウントをリンクさせます。これは asciinema auth
コマンドで行います。
$ asciinema auth Open the following URL in a web browser to link your install ID with your asciinema.org user account: https://asciinema.org/connect/XXXX-XXXX-XXXX-XXXX-XXXX This will associate all recordings uploaded from this machine (past and future ones) to your account, and allow you to manage them (change title/theme, delete) at asciinema.org.
メッセージにあるように https://asciinema.org/connect/XXXX-XXXX-XXXX-XXXX-XXXX
をブラウザで開きリンク完了です。
asciinema upload
コマンドで記録したファイルを公開します。
$ asciinema upload ./hello-world.cast https://asciinema.org/a/XLKvvObxMUejVH85xdjlGTF86
コマンド実行後に表示されるURLが再生ページになります。
アップロード直後はprivate状態となっていて、GitHubのGistと同様に、URLを知っている人しかアクセスできません。
ギャラリーやユーザーページで公開したい場合は右下のSettingsメニューから Make public
や Make private
で切り替えます。
なお、いつでもpublicからprivateへ切り戻せます。
例えデフォルトが非公開でもWebで共有が心配な場合
ローカルだけで保存、再生するか、asciinema/asciinema-serverというサーバのコードが公開されているので独自にインスタンスを立てましょう。
設定で独自のインスタンスにAPIの向き先を変更すれば、asciinema.orgは使われないようです。
さいごに
類似のツールとしてアニメーションGIFに変換できるTerminalizerもありますが、今回はasciinemaを紹介しました。ターミナル操作に関するブログやWebでの見せ方の手段の一つにいかがでしょうか?